package com.itheima.service;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.constant.MessageConstant;
import com.itheima.dao.CheckitemDao;
import com.itheima.entity.PageResult;
import com.itheima.pojo.CheckItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author: bowen
 * @Date: 2019/7/11 15:57
 * @Description:检查项实现类
 */
@Service(interfaceClass = CheckitemService.class)
@Transactional
public class CheckitemServiceImpl implements CheckitemService {

	@Autowired
	CheckitemDao checkitemDao;

	/**
	 *  @描述：新增检查项
	 */
	public void add(CheckItem checkitem) {
        checkitemDao.add(checkitem);

	}

	/**
	 *  @描述：分页查询
	 */
	public PageResult findPage(Integer currentPage, Integer pageSize, String queryString) {
		PageHelper.startPage(currentPage, pageSize);
		Page<CheckItem> pages = checkitemDao.findPage(queryString);
		return new PageResult(pages.getTotal(), pages.getResult());
	}

	/**
	 *  @描述：删除检查项
	 */
	public void delete(Integer id) {
	//	判断检查项是否被检查组引用
		 Long count = checkitemDao.findCountByCheckitemId(id);
		 if(count > 0){
			 //	如果被引用，抛出异常
             throw new RuntimeException(MessageConstant.CHECKITEM_IS_CALLED);
		 }
	//	没有被引用，直接删除
		checkitemDao.delete(id);
	}

	/**
	 *  @描述：根据id查询检查项
	 */
	public CheckItem findById(Integer id) {
		return checkitemDao.findById(id);
	}

	/**
	 *  @描述：编辑检查项
	 */
	public int edit(CheckItem checkItem) {
		return checkitemDao.edit(checkItem);

	}
	/**
	 *  @描述：查询所有的检查项
	 */
	@Override
	public List<CheckItem> findAll() {
		return checkitemDao.findAll();
	}
}
